#ifndef STYLE_MANAGER_PRIVATE_H
#define STYLE_MANAGER_PRIVATE_H
#include <qobject.h>
#include <qmap.h>
#include <osgEarthSymbology/TextSymbol>
#include <osgEarthSymbology/Style>
#include "StyleManager.h"
#include "script/ScriptHelper.h"

class StyleManagerPrivate : public QObject,public StyleManager,public ScriptHelper
{
	Q_OBJECT
public:
	StyleManagerPrivate(QObject* parent = nullptr);
	~StyleManagerPrivate();

	QString getModule()const { return "StyleManager"; }
public:
    QString createTextStyle(const QString& font,int size,const QString& color = "#ffffff");
    void insertStyle(const QString& styleName,const QString& style);
    QStringList getStyleNameList()const;
    QString getStyleByName(const QString& styleName)const;

    void setDefaultStyle(const QString& styleName);
    QString getDefaultStyle()const;

	bool containStyle(const QString& styleName);

    bool loadStyleFromJsonFile(const QString& jsonFile);
    int loadStyleFromDirectory(const QString& directory);

    void saveStyleToDirectory(const QString& directory);

	bool createTextStyle(const QStringList& argument,QString* error = nullptr);
	bool setDefaultStyle(const QStringList& argument,QString* error = nullptr);
	bool loadStyleFromJsonFile(const QStringList& argument,QString* error = nullptr);
	bool loadStyleFromDirectory(const QStringList& argument,QString* error = nullptr);
	bool saveStyleToDirectory(const QStringList& argument,QString* error = nullptr);
public:
	virtual StyleManagerPrivate* getPrivateClass()
	{
		return this;
	}
public:
	void setDefaultOsgStyle(const osgEarth::Symbology::Style& style);
	osgEarth::Symbology::Style getDefaultOsgStyle()const;

	void insertOsgStyle(const QString& name,const osgEarth::Symbology::Style& style);
	osgEarth::Symbology::Style getOsgStyleByName(const QString& name)const;
private:
	osgEarth::Symbology::Style defaultStyle;
	QMap<QString,osgEarth::Symbology::Style> styleSet;
};

#endif